#ifndef MATHMLPRESENTATIONEXPRESSIONWRITER_H
#define MATHMLPRESENTATIONEXPRESSIONWRITER_H

#include "expressionwriter.h"
#include <QMap>
#include "operator.h"

/**
 *	This class represents the mathml expression writer.
 *
 *	@author Aleix Pol <aleixpol@gmail.com>
 */

class MathMLPresentationExpressionWriter : public ExpressionWriter
{
	public:
		typedef QString (*operatorToString)(const Container* o, MathMLPresentationExpressionWriter* w);
		MathMLPresentationExpressionWriter(const Object* o);
		
		virtual QString accept(const Ci* var);
		virtual QString accept(const Cn* var);
		virtual QString accept(const Container* var);
		virtual QString accept(const Operator* var);
		
		QString result() const { return m_result; }
		
	private:
		QString m_result;
		static operatorToString m_operatorToPresentation[Operator::nOfOps];
};

#endif
